/**
 * Created by IntelliJ IDEA.
 * User: Slejus
 * Date: 13.7.23
 * Time: 14.29
 * To change this template use File | Settings | File Templates.
 */
function validateMessage(message) {
    Alfresco.util.PopupManager.displayPrompt(
        {
            title:"Trūksta duomenų",
            text: message,
            buttons:[
                {
                    text:Alfresco.util.message("Grįžti", this.name),
                    handler:function regTitle_back() {
                        this.destroy();
                    },
                    isDefault:true
                }
            ]
        });
}

function getNodeRefs(refs) {
    var strin = "";
    var noderefs = refs;
    var n = noderefs.split("workspace://SpacesStore/");
    for (var i = 1; i < n.length; i++) {
        strin += n[i];
    }
    var m = strin.replace(/,/g, "|");
    return m;
}

function getGroup(bId, type, title){
    /*console.log("bId: "+bId);
     console.log("type: "+ type);
     console.log("title: "+title);*/
    var groupTitle = null;
    if(type === "notice"){
        /*groupTitle = getNoticeGroup(title);
         return groupTitle;*/
        var noticeList = new Array();   noticeList[0] = '';

        // Materialines pasalpos klausimais
        noticeList[1] = 'Dėl materialinės pašalpos skyrimo';

        // Kitais personalo klausimais
        noticeList[2] = 'Dėl darbo poilsio dieną nustatymo';    noticeList[3] = 'Dėl duomenų pateikimo';
        noticeList[4] = 'Dėl įmonės struktūros pakeitimo';      noticeList[5] = 'Dėl komandiruotės į užsienį';
        noticeList[6] = 'Dėl naujo skyriaus įsteigimo';         noticeList[7] = 'Dėl naujos pareigybės įsteigimo';
        noticeList[8] = 'Dėl papildomo darbo nustatymo';        noticeList[9] = 'Dėl pareiginio atlyginimo nustatymo';
        noticeList[10] = 'Dėl pareiginio priedo nustatymo';     noticeList[11] = 'Dėl pareigų pakeitimo';
        noticeList[12] = 'Dėl pavadavimo';                      noticeList[13] = 'Dėl premijavimo';
        noticeList[14] = 'Dėl viršvalandinio darbo nustatymo';  noticeList[15] = 'Dėl darbo drausmės pažeidimo';

        // Atostogu klausimais
        noticeList[16] = 'Dėl kasmetinių atostogų atšaukimo';   noticeList[17] = 'Dėl poilsio dienų suteikimo';
        noticeList[18] = 'Dėl papildomų poilsio dienų suteikimo';

        for (var i = 0; i < noticeList.length; i++) {
            var group = null;
            if (noticeList[i] === title) {
                if (i > 0 && i < 2) {group = "Materialinės pašalpos klausimais";}
                else if (i > 1 && i < 16) {group = "Kitais personalo klausimais";}
                else if (i > 15 && i < 19) {group = "Atostogų klausimais";}
                else {
                    validateMessage("Nenumatyta pranešimo antraštė.");
                    document.getElementById(bId).disabled = false;
                    return false;
                }
                break;
            }
        }
        return group;
    } else if(type === "appeal"){
        var appealList = new Array();   appealList[0] = '';

        // Materialines pasalpos klausimais
        appealList[1] = 'Dėl materialinės pašalpos skyrimo';    appealList[2] = 'Dėl vienkartinės pašalpos skyrimo gimus vaikui';

        // Kitais personalo klausimais
        appealList[3] = 'Dėl poilsio dienų suteikimo';                      appealList[4] = 'Dėl papildomų poilsio dienų suteikimo';
        appealList[5] = 'Dėl neatvykimo į darbą administracijos leidimu';   appealList[6] = 'Dėl darbo laiko nustatymo';
        appealList[7] = 'Dėl pavardės pakeitimo įmonės dokumentuose';       appealList[8] = 'Dėl atleidimo iš darbo';
        appealList[9] = 'Dėl komandiruotės Lietuvos Respublikoje';

        // Atostogu klausimais
        appealList[10] = 'Dėl kasmetinių atostogų suteikimo';       appealList[11] = 'Dėl kasmetinių minimalių 35 dienų atostogų suteikimo';
        appealList[12] = 'Dėl kasmetinių atostogų perkėlimo';       appealList[13] = 'Dėl nemokamų atostogų suteikimo';
        appealList[14] = 'Dėl nemokamų mokymosi atostogų suteikimo';    appealList[15] = 'Dėl tėvystės atostogų suteikimo';
        appealList[16] = 'Dėl nėštumo ir gimdymo atostogų suteikimo';   appealList[17] = 'Dėl nėštumo ir gimdymo atostogų pratęsimo';
        appealList[18] = 'Dėl vaikui prižiūrėti atostogų suteikimo';    appealList[19] = 'Dėl kasmetinių atostogų pratęsimo';

        for (var i = 0; i < appealList.length; i++) {
            var group = null;
            if (appealList[i] === title) {
                if (i > 0 && i < 3) {group = "Materialinės pašalpos klausimais";}
                else if (i > 2 && i < 10) {group = "Kitais personalo klausimais";}
                else if (i > 9 && i < 20) {group = "Atostogų klausimais";}
                else {
                    validateMessage("Nenumatyta prašymo antraštė.");
                    document.getElementById(bId).disabled = false;
                    return false;
                }
                break;
            }
        }
        return group;
    } else if (type === "order" || type === "orderPer"){
        /*groupTitle = getOrderPerGroup(title);
         return groupTitle;*/
        var orderPerList = new Array(); orderPerList[0] = '';
        // Komandiruočių klausimais
        orderPerList[1] = 'Dėl komandiravimo Lietuvoje';        orderPerList[2] = 'Dėl komandiravimo į užsienį';

        // Atostogų klausimais
        orderPerList[3] = 'Dėl kasmetinių atostogų suteikimo';  orderPerList[4] = 'Dėl kasmetinių minimalių 35 dienų atostogų suteikimo';
        orderPerList[5] = 'Dėl kasmetinių atostogų perkėlimo';  orderPerList[6] = 'Dėl nemokamų atostogų suteikimo';
        orderPerList[7] = 'Dėl nemokamų mokymosi atostogų suteikimo';   orderPerList[8] = 'Dėl tėvystės atostogų suteikimo';
        orderPerList[9] = 'Dėl nėštumo ir gimdymo atostogų suteikimo';  orderPerList[10] = 'Dėl nėštumo ir gimdymo atostogų pratęsimo';
        orderPerList[11] = 'Dėl vaiko priežiūros atostogų suteikimo';   orderPerList[12] = 'Dėl kasmetinių atostogų atšaukimo';
        orderPerList[13] = 'Dėl kasmetinių atostogų pratęsimo';

        // Personalo klausimais
        orderPerList[14] = 'Dėl vienkartinės pašalpos gimus vaikui skyrimo';    orderPerList[15] = 'Dėl vienkartinės pašalpos skyrimo mirus šeimos nariui';
        orderPerList[16] = 'Dėl materialinės pašalpos skyrimo';     orderPerList[17] = 'Dėl poilsio dienų suteikimo';
        orderPerList[18] = 'Dėl papildomų poilsio dienų suteikimo'; orderPerList[19] = 'Dėl neatvykimo į darbą administracijos leidimu';
        orderPerList[20] = 'Dėl darbo laiko nustatymo';             orderPerList[21] = 'Dėl pavardės pakeitimo įmonės dokumentuose';
        orderPerList[22] = 'Dėl atleidimo iš darbo';                orderPerList[23] = 'Dėl darbo poilsio dieną nustatymo';
        orderPerList[24] = 'Dėl duomenų pateikimo';                 orderPerList[25] = 'Dėl įmonės struktūros pakeitimo';
        orderPerList[26] = 'Dėl naujo skyriaus įsteigimo';          orderPerList[27] = 'Dėl naujos pareigybės įsteigimo';
        orderPerList[28] = 'Dėl papildomo darbo nustatymo';         orderPerList[29] = 'Dėl pareiginio atlyginimo nustatymo';
        orderPerList[30] = 'Dėl pareiginio priedo nustatymo';       orderPerList[31] = 'Dėl pareigų pakeitimo';
        orderPerList[32] = 'Dėl pavadavimo';                        orderPerList[33] = 'Dėl premijavimo';
        orderPerList[34] = 'Dėl viršvalandinio darbo nustatymo';    orderPerList[35] = 'Dėl darbo drausmės pažeidimo';
        orderPerList[36] = 'Dėl padėkos pareiškimo darbuotojui ir jo premijavimo';  orderPerList[37] = 'Dėl padėkos pareiškimo darbuotojai ir jos premijavimo';

        for (var i = 0; i < orderPerList.length; i++) {
            var group = null;
            if (orderPerList[i] === title) {
                if (i > 0 && i < 3) {group = "Komandiruočių klausimais";}
                else if (i > 2 && i < 14) {group = "Atostogų klausimais";}
                else if (i > 13 && i < 38) {group = "Personalo klausimais";}
                else {
                    validateMessage("Nenumatyta įsakymo antraštė.");
                    document.getElementById(bId).disabled = false;
                    return false;
                }
                break;
            }
        }
        return group;
    } else{
        validateMessage("Nepavyko nustatyti dokumento registracijos grupės.");
        document.getElementById(bId).disabled = false;
        return false;
    }
}

function getExecutor(bId, propId){
    var executorNodeRef = null, executor = null;
    executorNodeRef = document.getElementById(propId + "assoc_rccwf_executor").value;
    if (executorNodeRef != null) {
        executor = getNodeRefs(executorNodeRef);
        return executor;
    } else {
        validateMessage("Neparinktas vykdytojas.");
        document.getElementById(bId).disabled = false;
        return false;
    }

}

function dataListRegistration(btnId, nGr, ur, pGr, pTi, pas, init, nod, mod) {
    var URI = null;
    var time = new Date().getTime();

    var registerData = function (res) {
        var result = eval('(' + res.serverResponse.responseText + ')');
        if (result.regNumber != "" && result.regNumber != undefined && result.regNumber != null) {
            URI = ur + encodeURIComponent(result.regNumber) + '/' + encodeURIComponent(pGr) + '/' + encodeURIComponent(pTi) + '/' + encodeURIComponent(pas) + '/' + encodeURIComponent(init) + '/' + encodeURIComponent(nod) + '/' + encodeURIComponent(mod);
            $.ajax({
                type:"GET",
                url:Alfresco.constants.PROXY_URI + URI,
                success:function (response) {
                    if (response == 'success') {
                        $('#responseStatus').html("<span class='green'>Duomenų įrašas sėkmingai sukurtas</span>").css("color", "green");
                    } else {
                        $('#responseStatus').html("<span class='red'>Nepavyko sukurti duomenų įrašo.</span>").css("color", "red");
                        document.getElementById(btnId).disabled = false;
                    }
                    $("#loader").hide();
                },
                error:function (error) {
                    $('#responseStatus').html("<span class='red'>Nepavyko sukurti duomenų įrašo. Klaida jungiantis prie serverio.</span>").css("color", "red");
                    document.getElementById(btnId).disabled = false;
                    $("#loader").hide();
                }
            });
        } else {
            $('#responseStatus').html("<span class='red'>Nepavyko sukurti duomenų įrašo. Klaida generuojant registracijos numerį.</span>").css("color", "red");
            document.getElementById(btnId).disabled = false;
        }
    };
    $("#loader").show();
    Alfresco.util.Ajax.jsonGet({
        url:Alfresco.constants.PROXY_URI + 'demo/RegNumber?group=' + nGr + '&time=' + time,
        successCallback:{
            fn:registerData,
            scope:this
        },
        failureCallback:{
            fn:function () {
                $('#responseStatus').html("<span class='red'>Nepavyko sukurti duomenų įrašo. Klaida generuojant registracijos numerį.</span>").css("color", "red");
                document.getElementById(btnId).disabled = false;
                $("#loader").hide();
            },
            scope:this
        }
    });
}

function getGroupSymbols(bId, regGroup) {
    var group = null;
    if (regGroup === "Atostogų klausimais") {group = "a";}
    else if (regGroup === "Materialinės pašalpos klausimais"){group = "mp";}
    else if (regGroup === "Kitais personalo klausimais"){group = "pk";}
    else if (regGroup === "Komandiruočių klausimais"){group = "k";}
    else if (regGroup === "Personalo klausimais"){group = "p";}
    else {
        validateMessage("Nenumatyta dokumento registracijos grupė");
        document.getElementById(bId).disabled = false;
        return false;
    }
    return group;
}

function register(buttonId, type, pTitle, pGr, urlName, regGroup, mode){
    document.getElementById(buttonId).disabled = true;
    var nodes = null, initiator = null, wfNodeRefs = null, pastabos = null, pGroup = null, group = null, propertyId = null, executor = null;

    propertyId	= "page_x002e_data-form_x002e_task-edit_x0023_default_";

    if(pTitle === ""){
        pTitle = document.getElementById(propertyId + 'prop_rccwf_hiddenRegTitle').value;
        if (type === "orderPer") {
            //var pTitleFull = pTitle.split("|")[1];
            //pTitle = pTitle.split("|")[0];
        }
    }
    /*
    console.log("pTitle: " + pTitle);
    console.log("type: " + type);
    */

    if(pGr === "getGroup") {
        //console.log("getGroup");
        pGroup = getGroup(buttonId, type, pTitle);
    } else if(pGr === "getValue"){
        pGroup = document.getElementById(propertyId + 'prop_rccwf_hiddenRegGavName').value;
    } else if(pGr != ""){
        pGroup = pGr;
    } else {
        validateMessage("Klaida registracijos konfigūracijoje.");
        document.getElementById(buttonId).disabled = false;
        return false;
    }

    //console.log("pGroup: " + pGroup);

    if (regGroup === "get"){
        group = getGroupSymbols(buttonId, pGroup);
    } else if(regGroup != ""){
        group = regGroup;
    } else {
        validateMessage("Klaida registracijos konfigūracijoje.");
        document.getElementById(buttonId).disabled = false;
        return false;
    }

    //console.log("group: " + group);

    if(type === "order" || type ==="orderPer"){
        //executor = getExecutor(buttonId, propertyId);
        var executorNodeRef = null;// executor = null;
        executorNodeRef = document.getElementById(propertyId + "assoc_rccwf_executor").value;
        //console.log("ex ref: " + executorNodeRef);
        if (executorNodeRef != null && executorNodeRef != "") {
            executor = getNodeRefs(executorNodeRef);
        } else {
            validateMessage("Neparinktas vykdytojas.");
            document.getElementById(buttonId).disabled = false;
            return false;
        }
    }

    //console.log("Executor: " + executor);

    wfNodeRefs = document.getElementById(propertyId + 'assoc_packageItems').value;
    if (wfNodeRefs != "" && wfNodeRefs != null) {
        nodes = getNodeRefs(wfNodeRefs);
    } else {
        validateMessage("Nerasti darbų sekos dokumentai.");
        document.getElementById(buttonId).disabled = false;
        return false;
    }

    pastabos = document.getElementById(propertyId + 'prop_bpm_comment').value;
    if (pastabos === "") {
        pastabos = "Įregistruotas";
    }

    if (type != "order" && type != "orderPer"){
        initiator = document.getElementById(propertyId + 'prop_rccwf_initiatorName').value;
        if (initiator === null || initiator === "") {
            validateMessage("Nerastas darbų sekos iniciatorius.");
            document.getElementById(buttonId).disabled = false;
            return false;
        }
    }

    //console.log("Initiator: " + initiator);

    if(type === "order" || type === "orderPer"){
        dataListRegistration(buttonId, group, urlName, pGroup, pTitleFull, pastabos, executor, nodes, mode);
    } else if (type === "appeal" || type === "notice" || type ==="perRef"){
        dataListRegistration(buttonId, group, urlName, pGroup, pTitle, pastabos, initiator, nodes, mode);
    } else {
        validateMessage("Konfigūracijos klaida. Kreipkitės į sistemos administratorių.");
    }
}